//package com.fast.controller.file;
//
//import com.fast.common.result.common.R;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.pdfbox.pdmodel.PDDocument;
//import org.apache.pdfbox.printing.PDFPageable;
//import org.apache.pdfbox.printing.PDFPrintable;
//import org.apache.pdfbox.printing.Scaling;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.print.*;
//import java.awt.print.*;
//import java.io.*;
//
///**
// * @author hjw
// * @since 2022年04月06日 14:35:00
// */
//@RestController
//@Api(tags = "打印机管理")
//@Slf4j
//@RequestMapping("print")
//public class FileController {
//
//    @ApiOperation(value = "获取打印机列表")
//    @GetMapping("/get")
//    private PrintService[] getPrintService() {
//        PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
//        return printServices;
//    }
//
//    @ApiOperation(value = "打印测试")
//    @PostMapping("/print1")
//    public void print(String printName, @RequestPart("multipartFile") MultipartFile multipartFile) throws IOException, PrinterException {
////        // 使用打印机的名称
////        String printName = "\\\\172.17.1.127\\Canon-print";
//
//        /*
//            保存上传的文件到"e:\\"
//         */
////        String pdfPath = "e:\\";
////        File file = new File(pdfPath+headerImg.getOriginalFilename());
////        InputStream inputStream = headerImg.getInputStream();
////        FileOutputStream out = new FileOutputStream(file);
////        IoUtil.copy(headerImg.getInputStream(),out);
////        out.write(headerImg.getBytes());
////        out.close();
//
//        // 读取pdf文件
//        PDDocument document = PDDocument.load(multipartFile.getInputStream());
//        // 创建打印任务
//        PrinterJob job = PrinterJob.getPrinterJob();
//        job.setJobName(multipartFile.getOriginalFilename());
//        // 遍历所有打印机的名称
//        for (PrintService ps : PrinterJob.lookupPrintServices()) {
//            String psName = ps.toString();
//            // 选用指定打印机
//            if (psName.equals(printName)) {
//                job.setPrintService(ps);
//                break;
//            }
//        }
//
//        job.setPageable(new PDFPageable(document));
//
//        Paper paper = new Paper();
//        // 设置打印纸张大小
//        paper.setSize(598, 842); // 1/72 inch
//        // 设置打印位置 坐标
//        paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight()); // no margins
//        // custom page format
//        PageFormat pageFormat = new PageFormat();
//        pageFormat.setPaper(paper);
//        // override the page format
//        Book book = new Book();
//        // append all pages 设置一些属性 是否缩放 打印张数等
//        book.append(new PDFPrintable(document, Scaling.ACTUAL_SIZE), pageFormat, 1);
//        job.setPageable(book);
//        // 开始打印
//        job.print();
//    }
//
//    @ApiOperation("上传文件到指定位置-字节输出流")
//    @PostMapping("upload")
//    public R<String> printStream(MultipartFile file) throws IOException {
//        InputStream is = file.getInputStream();
//        //File.pathSeparator----------";"
//        System.out.println(File.pathSeparator);
//        //File.separator------------"\"
//        System.out.println(File.separator);
//        File file1 = new File("upload" + File.separator + file.getOriginalFilename());
//        File file2 = new File("upload");
//        if (!file2.exists()) {
//            file2.mkdirs();
//        }
//        if (!file1.exists()) {
//            file1.createNewFile();
//        }else {
//
//        }
//        FileOutputStream fos = new FileOutputStream("upload" + File.separator + file.getOriginalFilename());
//        byte[] bs = new byte[1024 * 6];
//        int len = 0;
//        while ((len = is.read(bs)) != -1) {
//            fos.write(bs, 0, len);
//        }
//        fos.close();
//        return R.success("上传成功");
//    }
//
//    @ApiOperation("上传文件到指定位置-字节输出缓冲流")
//    @PostMapping("upload1")
//    public R<String> printStream1(MultipartFile file) throws IOException {
//        File file1 = new File("upload" + File.separator + file.getOriginalFilename());
//        File file2 = new File("upload");
//        if (!file2.exists()) {
//            file2.mkdirs();
//        }
//        if (!file1.exists()) {
//            file1.createNewFile();
//        }
//        FileOutputStream fos = new FileOutputStream("upload" + File.separator + file.getOriginalFilename());
//        BufferedOutputStream bos = new BufferedOutputStream(fos);
//        bos.write(file.getBytes());
//        fos.close();
//        bos.close();
//        return R.success("上传成功");
//    }
//
//    @ApiOperation("上传文件到指定位置-字符输出缓冲流")
//    @PostMapping("upload2")
//    public R<String> printStream2(MultipartFile file) throws IOException {
//        File file1 = new File("upload" + File.separator + file.getOriginalFilename());
//        File file2 = new File("upload");
//        if (!file2.exists()) {
//            file2.mkdirs();
//        }
//        if (!file1.exists()) {
//            file1.createNewFile();
//        }
//        FileWriter fw = new FileWriter("upload" + File.separator + file.getOriginalFilename());
//        BufferedWriter bw = new BufferedWriter(fw);
//        bw.write(new String(file.getBytes()));
//        bw.close();
//        return R.success("上传成功");
//    }
//}
